﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using GRC_TPE_WebApp.Controller;

namespace GRC_TPE_WebApp.View.Private.Communication
{
    public partial class EditCommunication : System.Web.UI.Page
    {
        int idCommunication = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            /// tentative de récupération de l'id
            if (!int.TryParse(Request.QueryString["id"], out idCommunication))
                /// redirection s'il y a une erreur au Parse
                Response.Redirect(Request.UrlReferrer.AbsolutePath); ;
        }

        /// <summary>
        /// Méthode déclenchée une fois la page chargée
        /// </summary>
        /// <param name="e"></param>
        protected override void OnLoadComplete(EventArgs e)
        {
            base.OnLoadComplete(e);

            if (this.idCommunication != 0)
            {
                /// recherche des valeurs des champs de la communication à modifier en base
                string[] communicationFields = CommunicationController.GetCommunicationFields(this.idCommunication);

                ///si tous les champs ont bien été retournés
                if (communicationFields.Count() == 6)
                {
                    /// affichage des valeurs dans les champs
                    DateTime date = DateTime.Now;
                    if (!DateTime.TryParse(communicationFields[0], out date))
                        Response.Redirect(Request.Url.AbsolutePath);

                    this.C_Date.SelectedDate = date;
                    this.editCommunicationDescription.Text = communicationFields[1];
                    this.editCommunicationTitre.Text = communicationFields[2];
                    this.L_Client.Text = communicationFields[4];
                    this.L_User.Text = communicationFields[5];

                    /// gestion du type
                    switch (communicationFields[3])
                    {
                        case "E-mail":
                            this.editCommunicationType.SelectedIndex = 0;
                            break;
                        case "Téléphone":
                            this.editCommunicationType.SelectedIndex = 1;
                            break;
                        case "Visite":
                            this.editCommunicationType.SelectedIndex = 2;
                            break;
                    }
                }
                else
                    /// redirection s'il y a une erreur au Parse
                    Response.Redirect(Request.UrlReferrer.AbsolutePath);
            }
        }

        /// <summary>
        /// Méthode déclenchée au clic sur le bouton d'enregistrement
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void B_SaveComm_Click(object sender, EventArgs e)
        {

            string ret = CommunicationController.EditCommunication(this.idCommunication, this.C_Date.SelectedDate, this.editCommunicationDescription.Text, this.editCommunicationTitre.Text, this.editCommunicationType.Text);
            if (ret == "No error")
            {
                this.editCommErrorMessage.ForeColor = System.Drawing.Color.DarkGreen;
                this.editCommErrorMessage.Text = "Communication modifiée avec succès";
            }
            else
            {
                this.editCommErrorMessage.ForeColor = System.Drawing.Color.DarkRed;
                this.editCommErrorMessage.Text = ret;
            }
        }

        /// <summary>
        /// Méthode déclenchée au clic sur le bouton d'annulation
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void B_Cancel_Click(object sender, EventArgs e)
        {
            Response.Redirect("ListCommunications.aspx");
        }
    }
}